#include <iostream>

#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"



class OneLoop {
public:
std::vector<int> nums;
    int get_range_sum(int off,int w){
        if(off==0){
            return nums[w-1];
        }else{
            return nums[off+w-1]-nums[off-1];
        }
    }
    bool run(
            int n,int k
//            std::string &s1,std::string &s2
    ) {
        nums.resize(n);
        for(int i=0;i<n;i++){
            int a=0;std::cin>>a;
            if(i==0){
                nums[i]=a;
            }else{
                nums[i]=nums[i-1]+a;
            }
        }
        int cnt=0;
        //窗口
        for(int i=1;i<=nums.size();i++){
            for(int off=0;off<nums.size()-i+1;off++){
                if(get_range_sum(off,i)%k==0){
                    cnt++;
                }
            }
        }
        printf("%d\n",cnt);
        return true;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int a, b, c, d, e;
        //        std::cin >> a;
//        std::string s1,s2;
        while (std::cin>>a>>b){
//        while (std::getline(std::cin,s1)) {
//            std::getline(std::cin,s2);
            OneLoop l;
            if (!l.run(a,b)) {
                //                return;
            }
        }


    }
};

struct Base{
    virtual void ss(){
        printf("base ss");
    }
    virtual ~Base(){
        printf("base ~");
    }
};

struct A:public Base{
    virtual void ss(){
        printf("A ss");
    }
    virtual ~A(){
        printf("A ~");
    }
};

int main() {
    Base * p=new A();
    p->ss();
    p->Base::ss();
    delete p;

    //    bool cur_num= true;
//    Solution().run();
    return 0;
}

